package com.quectel.pay.module.order.service;

import com.quectel.pay.module.order.dto.PayOrderRefundDto;
import com.quectel.pay.module.order.dto.request.InitOrderParams;
import com.quectel.pay.module.order.dto.response.NotifyCheckResult;
import com.quectel.pay.module.order.dto.response.OrderCreatedResponseDto;
import com.quectel.pay.module.order.dto.response.SendRefundResp;

import java.util.Map;

/**
 * 支付宝JSAPI支付相关
 *
 * @author: caolu
 * @email: louis.cao@quectel.com
 * @date: 2023-04-13 13:52:00
 */
public interface OrderAliAppPayService {
    /**
     * 创建一个支付宝订单 并存入数据库
     *
     * @param initOrderParams
     * @return 没有成功返回null
     */
    OrderCreatedResponseDto createOrder(InitOrderParams initOrderParams);


    /**
     * 发起退款 成功就代表退款成功 无需等待回掉
     *
     * @param payChannelId
     * @param refundReq
     * @return
     */
    SendRefundResp sendRefundRequest(Long payChannelId, PayOrderRefundDto refundReq);


    /**
     * 校验支付宝参数 退款成功和支付成功都可以使用这个 因为支付宝很方便 退款和支付结果通知的url是一样的校验方式也一样
     *
     * @param payChannelId 支付通道
     * @param notifyParams 这个是request.getParameterMap产生的
     * @return
     */
    NotifyCheckResult checkNotify(Long payChannelId, Map<String, String[]> notifyParams);


}
